"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var uuid_1 = require("uuid");
var Operator;
(function (Operator) {
    /**
     * 相等
     */
    Operator[Operator["EQ"] = 1] = "EQ";
    /**
     * 不相等
     */
    Operator[Operator["NEQ"] = 2] = "NEQ";
    /**
     * 在某个集合中
     */
    Operator[Operator["IN"] = 3] = "IN";
    /**
     * 不在某个集合中
     */
    Operator[Operator["NOT_IN"] = 4] = "NOT_IN";
    /**
     * 小于, <
     */
    Operator[Operator["LT"] = 5] = "LT";
    /**
     * 大于，>
     */
    Operator[Operator["GT"] = 6] = "GT";
    /**
     * 不大于， <=
     */
    Operator[Operator["NGT"] = 7] = "NGT";
    /**
     * 不小于, >=
     */
    Operator[Operator["NLT"] = 8] = "NLT";
    /**
     * 在某个范围内, 闭区间
     */
    Operator[Operator["RIN"] = 9] = "RIN";
    /**
     * 多个区间的组合
     * 仅限内部使用
     */
    Operator[Operator["SEGMENTS_INNER"] = 10] = "SEGMENTS_INNER";
    /**
     * 左开右闭区间
     */
    Operator[Operator["LO_IN_INNER"] = 11] = "LO_IN_INNER";
    /**
     * 左闭右开区间
     */
    Operator[Operator["RO_IN_INNER"] = 12] = "RO_IN_INNER";
    /**
     * 开区间
     */
    Operator[Operator["O_IN_INNER"] = 13] = "O_IN_INNER";
    /**
     * 全集
     */
    Operator[Operator["FULL"] = 14] = "FULL";
    /**
     * 空集
     */
    Operator[Operator["EMPTY"] = 15] = "EMPTY";
})(Operator = exports.Operator || (exports.Operator = {}));
var BoolOperation;
(function (BoolOperation) {
    BoolOperation[BoolOperation["AND"] = 1] = "AND";
    BoolOperation[BoolOperation["OR"] = 2] = "OR";
    // NOT = 3, // 暂时先不考虑
    // XOR = 4, // 暂时不考虑
})(BoolOperation = exports.BoolOperation || (exports.BoolOperation = {}));
exports.EMPTY = Object.freeze({
    uuid: uuid_1.v4(),
    key: 'not_matter',
    operator: Operator.EMPTY,
    value: 0,
});
exports.FULL = Object.freeze({
    uuid: uuid_1.v4(),
    key: 'not_matter',
    operator: Operator.FULL,
    value: 0,
});
